////////////////////////////////////////////////////////////////////////////////
//
// $Id$ 
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
// 
// This software consists of voluntary contributions is licensed under the 
// MIT <http://www.opensource.org/licenses/mit-license.php>. 
// 
// 
// Portuguese Translation
// 
// ESTE SOFTWARE É FORNECIDO “COMO ESTÁ”, SEM GARANTIAS DE QUALQUER ESPÉCIE, 
// EXPRESSAS OU TÁCITAS, INCLUINDO SEM LIMITAÇÕES, QUAISQUER GARANTIA DE COMERCIABILIDADE, 
// DE ADEQUAÇÃO A FINALIDADES ESPECÍFICAS OU DE NÃO VIOLAÇÃO A DIREITOS DE TERCEIROS. 
// EM NENHUMA HIPÓTESE OS AUTORES OU TITULARES DOS DIREITOS AUTORAIS SERÃO RESPONSÁVEIS 
// POR QUAISQUER RECLAMAÇÕES E/OU INDENIZAÇÕES POR DANOS OU POR OUTROS MOTIVOS, 
// SEJAM ESSES DERIVADOS DE OBRIGAÇÕES CONTRATUAIS OU DE DECISÕES JUDICIAIS, 
// ILÍCITOS CIVIS OU OUTROS MOTIVOS, OS QUAIS VENHAM A OCORRER EM CONSEQÜÊNCIA 
// OU EM RELAÇÃO AO SOFTWARE , A SEU USO OU OUTRA FORMA DE NEGOCIAÇÃO/UTILIZAÇÃO. 
// 
// Esse software consiste de contribuições voluntárias e está sobre a licença
// MIT <http://www.opensource.org/licenses/mit-license.php>.
// 
////////////////////////////////////////////////////////////////////////////////

package br.mcaslib.swiz.event
{
	import br.mcaslib.common.FilterEngine;
	
	import flash.events.Event;
	
	import org.swizframework.utils.async.AsynchronousEvent;
	
	public class CrudEvent extends AsynchronousEvent
	{
		//--------------------------------------------------------------------------
		//
		//  Event's Name
		//
		//--------------------------------------------------------------------------

		public static const EVENT_CRUD_ACTION:String = "CrudAction";
		public static const EVENT_CRUD_STATE:String = "CrudState";
		public static const EVENT_CRUD_SERVER_LOAD:String = "CrudServerLoad";
		public static const EVENT_CRUD_SERVER_LOAD_COMPLETE:String = "CrudServerLoadComplete";
		public static const EVENT_CRUD_SERVER_SAVE:String = "CrudServerSave";
		public static const EVENT_CRUD_SERVER_SAVE_COMPLETE:String = "CrudServerSaveComplete";
		public static const EVENT_CRUD_SERVER_LOAD_FILTER:String = "CrudServerLoadFilter";
		public static const EVENT_CRUD_SERVER_LOAD_FILTER_COMPLETE:String = "CrudServerLoadFilterComplete";
		public static const EVENT_CRUD_SET_TOKEN:String = "CrudSetToken";

		//--------------------------------------------------------------------------
		//
		//  Action's Name
		//
		//--------------------------------------------------------------------------

		public static const ACTION_DETAIL:String = "DETAIL";
		public static const ACTION_CREATE:String = "CREATE";
		public static const ACTION_UPDATE:String = "UPDATE";
		public static const ACTION_DELETE:String = "DELETE";
		public static const ACTION_REFRESH:String = "REFRESH";
		public static const ACTION_FILTER:String = "FILTER";

		//--------------------------------------------------------------------------
		//
		//  Constructor
		//
		//--------------------------------------------------------------------------

		public function CrudEvent(type:String, crudTokenId:String = null) {
			super(type, true);
			if( crudTokenId ) {
				this.crudTokenId = crudTokenId;
			}
		}
		
		//--------------------------------------------------------------------------
		//
		//  Properties
		//
		//--------------------------------------------------------------------------
		
		public var action:String;
		
		public var state:String;
		
		public var vo:Object;
		
		public var crudTokenId:String;
		
		public var itemSaved:Object;
		
		public var filterEngine:FilterEngine;
		
		[ArrayElementType("FilterApply")] 
		public var filterApply:Array;
	}
}
